﻿using System;
using Phoenix.Diagnostics;
using Phoenix.Frames;
using Phoenix.Framework;

namespace Phoenix
{
    public interface IPhoenixHostBuilder
    {
        IPhoenixHostBuilder UseControllerLocator<TLocator>(TLocator locator) where TLocator : IControllerLocator;
        IPhoenixHostBuilder UseErrorReporter<TErrorReporter>(TErrorReporter errorReporter) where TErrorReporter : IErrorReporter;
        IPhoenixHostBuilder UseViewLocator<TViewLocator>(TViewLocator viewLocator) where TViewLocator : IViewLocator;
        IPhoenixHostBuilder UseControllerFactory<TControllerFactory>(TControllerFactory controllerFactory) where TControllerFactory : IControllerFactory;
        IPhoenixHostBuilder SetNavigationFrameFactory(Func<INavigationFrame> navigationFrameFactory);
        PhoenixConfiguration Configuration { get; }
    }
}